Software release generally refers to the distribution of a new or an upgraded version of computer software, which may include a program or a suite of programs. Software release may occur in a wide variety of environments, such as, for example, in quality assurance (QA), manufacturing, etc. In a typically release, the new or upgraded software is deployed to many machines, which include local and/or remote machines (e.g., servers, workstations, personal computers, special-purpose machines, such as cellular telephones, appliances, and set-top boxes, etc.). Furthermore, the machines may or may not have different platforms. A platform as used herein broadly refers to a combination of hardware and/or software to execute software applications. For example, a platform may include an operating system of the machine, programming environment of the machine, computer architecture of the machine, etc. Some examples of platforms include Linux®, Microsoft® Windows®, Solaris®, Mac OS® X, etc. For instance, software written in Java is likely to be deployed to machines having different platforms.
Different platforms typically work with different application programming interfaces (APIs). Thus, a release engineer conventionally has to manually log onto the machines having different platforms to input one or more commands in order to deploy the new or upgraded software properly. Furthermore, when the software release has to be conducted in a transactional format, the release engineer has to wait for the execution result of a transaction on one or more machines such that, if there is an error or failure on one of the machines, the release engineer may recover the error or failure by sending the appropriate commands to the machine having the error. Thus, the release of software to machines having different platforms may be a tedious and labor-intensive task.